“Operating system level virtualization” (“OS-level virtualization”) refers to the use of multiple isolated user-space instances under a common operating system, in which the common operating system is running directly on a physical computer. An OS-level virtualization instance may be referred to as a “container,” a “software container,” or a “jail.” Containers, and the user applications executing therein, across multiple physical computers may be managed by a central program, with an OS-level virtualization “runtime” engine in each operating system. Each user application instance may appear logically as running on a separate machine. Typically, a container holds a version of a user application and all the files needed to support the user application, for example, libraries and system tools. OS-level virtualization differs from hardware virtualization. In hardware virtualization, each virtual instance operates under its own OS, which can be a different OS from the one running in the underlying physical computer.
OS-level virtualization typically employs one runtime engine per OS, similar in role to a hypervisor used in hardware virtualization. Each runtime engine, in cooperation with the central container management program, may create and maintain multiple containers, and manage input/output (I/O) between outside entities and containerized user applications. Each container may be “immutable,” meaning that the contents of any specific container are never modified, upgraded, or downgraded. When a user application running in a container environment needs to be modified, another container holding the new version of the user application is created, and the runtime engine and managing application (such as the DOCKER™ OS-level virtualization application) point to the new container for I/O between outside entities and the containerized user application. In one aspect of the immutable container approach, in order to “roll back” a user application (meaning to revert to the most recent version of the user application before the current version), the OS-level virtualization application (OSLVA) need merely point to the container housing the prior version of the user application.